package Servlets;

import Beans.HorarioDoUsuario;
import Beans.Usuario;
import Daos.HorarioDoUsuarioDao;
import Daos.UsuarioDao;
import codigoGeral.AtualizaJogosMarcadoEPendentes;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class ServletLogin extends HttpServlet {

    public void erroLogin( HttpServletRequest request  , HttpServletResponse response) throws IOException{
         HttpSession sessão = request.getSession(true);
        sessão.setAttribute("erroLogin", "Usuário ou senha estão incorretos!");
        response.sendRedirect("index.jsp");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        //primeira coisa a fazer:matar a sessao, para nao haver conflitos

        HttpSession session = request.getSession(false);
        session.removeAttribute("usuario");
        session.removeAttribute("erroLogin");

        try {
            String login = request.getParameter("login");
            String senha = request.getParameter("password");

            if (login == null || senha == null) {
                erroLogin(request, response);
            }
            //pega usuario do banco
            List<Usuario> usuario = new UsuarioDao().getPorString("login=" + login);

            //pega usuario de nivel 0
            Usuario usuarioCapturado = usuario.get(0);

            if (usuarioCapturado.getSenha().equals(senha) && usuarioCapturado.getLogin().equals(login)) {
                System.out.println("Usuario e senhas estao corretos.");

                HttpSession sessão = request.getSession(true);
                sessão.setAttribute("usuario", usuarioCapturado);
                //pega horarioDosUsuarios

                //pega horarioDosUsuarios
                List<HorarioDoUsuario> horarioDoUsuarios = new ArrayList<HorarioDoUsuario>();
                horarioDoUsuarios = new HorarioDoUsuarioDao().get(usuarioCapturado);
                sessão.setAttribute("horariosLivres", horarioDoUsuarios);

//                //pega jogos marcados pelo usuario
//                List<Jogo> capturaJogosMarcados = new ArrayList<Jogo>();
//                capturaJogosMarcados = new JogoDao().getPorUsuario(usuarioCapturado);
//                List<ListaJogos> jogosMarcados = new ArrayList<ListaJogos>();
//                for (int i = 0; i < capturaJogosMarcados.size(); i++) {
//                    ListaJogos listaJogos = new ListaJogos(capturaJogosMarcados.get(i).getId(),
//                            capturaJogosMarcados.get(i).getDataJogo(),
//                            capturaJogosMarcados.get(i).getHorario().getHorarioChegada(),
//                            capturaJogosMarcados.get(i).getUsuario().getNome());
//
//                    jogosMarcados.add(listaJogos);
//                }
//
//                //pega a lista de todos os jogos
//
//
//
////               for (int i = 0; i < jogosMarcados.size(); i++) {
////                   System.out.println("numero jogo "+jogosMarcados.get(i).getNomeJogo());
////                   System.out.println("horario "+jogosMarcados.get(i).getHorario());
////                   System.out.println("data jogo "+jogosMarcados.get(i).getDataJogo());
////                   System.out.println("================================================");
////               }
//
//
//
//
//
//                sessão.setAttribute("jogosMarcados", jogosMarcados);



//                //pega jogos em que estou participando
//                List<Jogador> capturaJogosQueParticipo = new ArrayList<Jogador>();
//                capturaJogosQueParticipo = new JogadorDao().getPorUsuario(usuarioCapturado);
//
//                //cria lista para mostrar jogos pendentes
//                List<JogosPendentesDados> jogosQueParticipo = new ArrayList<JogosPendentesDados>();
//                Calendario calendario = new Calendario(null);
//
//                for (int i = 0; i < capturaJogosQueParticipo.size(); i++) {
//
//                    JogosPendentesDados jogosPendentesDados =
//                            new JogosPendentesDados(capturaJogosQueParticipo.get(i).getJogo().getDataJogo(),
//                            capturaJogosQueParticipo.get(i).getJogo().getHorario().getHorarioChegada(),
//                            capturaJogosQueParticipo.get(i).getJogo().getId(),
//                            capturaJogosQueParticipo.get(i).getConfirmacao().toString(),
//                            capturaJogosQueParticipo.get(i).getJogo().getUsuario().getNome());
//
//                    String dataAVerificar = capturaJogosQueParticipo.get(i).getJogo().getDataJogo();
//                    //   System.out.println("DAta a verificar " + dataAVerificar);
//                    if (calendario.comparaDataComAtual(dataAVerificar)) {
//                        jogosQueParticipo.add(jogosPendentesDados);
//                        System.out.println("Adicionado o jogo pendente");
//                    }
//
//                }
////                for (int i = 0; i < jogosQueParticipo.size(); i++) {
////                    System.out.println("Data :" + jogosQueParticipo.get(i).getData());
////                    System.out.println("Confirmação :" + jogosQueParticipo.get(i).getConfirmação());
////                    System.out.println("Horario :" + jogosQueParticipo.get(i).getHorario());
////                    System.out.println("Nome :" + jogosQueParticipo.get(i).getNomeJogo());
////                    System.out.println("Nome do cara que marcou o jogo: " + jogosQueParticipo.get(i).getUsuarioQueMarcouJogo());
////                    System.out.println("================================================");
////                }
//
////                 for (int i = 0; i < capturaJogosQueParticipo.size(); i++) {
////
////                     System.out.println("jogo "+capturaJogosQueParticipo.get(i).getJogo().getId());
////                     System.out.println("Data jogo "+capturaJogosQueParticipo.get(i).getJogo().getDataJogo());
////                     System.out.println("Horario jogo "+capturaJogosQueParticipo.get(i).getJogo().getHorario().getHorarioChegada());
////
////                     System.out.println("confirmação: "+capturaJogosQueParticipo.get(i).getConfirmacao().toString());
////                     System.out.println("usuario"+capturaJogosQueParticipo.get(i).getUsuario().getId());
////                     System.out.println("================================================");
////
////                 }
//
//                List<Jogador> proximosJogos = new ArrayList<Jogador>();
//                proximosJogos = new JogadorDao().get();
//
//                List<JogosPendentesDados> os10jogos = new ArrayList<JogosPendentesDados>();
//
//                for (int i = 0; i < proximosJogos.size(); i++) {
//                    JogosPendentesDados jogosPendentesDados =
//                            new JogosPendentesDados(proximosJogos.get(i).getJogo().getDataJogo(),
//                            proximosJogos.get(i).getJogo().getHorario().getHorarioChegada(),
//                            proximosJogos.get(i).getJogo().getId(),
//                            proximosJogos.get(i).getConfirmacao().toString(),
//                            proximosJogos.get(i).getJogo().getUsuario().getNome());
//                    os10jogos.add(jogosPendentesDados);
//
//                }
//                sessão.setAttribute("proximosJogos", proximosJogos);
//
//                sessão.setAttribute("jogosQueParticipo", jogosQueParticipo);

                //atualiza jogos marcados e pendentes
                AtualizaJogosMarcadoEPendentes atualizaJogosMarcadoEPendentes = new AtualizaJogosMarcadoEPendentes();
                atualizaJogosMarcadoEPendentes.atualizaTudo(session);
                
           






                //  request.setAttribute("id", "William");//envia id de usuario para rede
                response.sendRedirect("welcome.jsp");

            } else {
                erroLogin(request, response);
                // request.setAttribute("erroLogin", "Usuario ou senha estao incorretos");
                // response.sendRedirect("index.jsp");
            }
        } catch (Exception erro) {
            System.out.println(erro);
            erroLogin(request, response);
            //  request.setAttribute("erroLogin", "Usuario ou senha estao incorretos");
            //   RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
            //   rd.forward(request, response);
        }
    }
}
